﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using System.IO;

namespace SInvaders
{
    class Input
    {      
            string letra;
            SpriteFont Fonte;
            string[] texto = new string[20];
            string TotalNome;
            public bool Apertando = true;
            public bool Apertando2 = true;
            bool umavez = false;
            public static int Pontos = 0;
            Texture2D Fundo;
       
            Rectangle recMouseAtual;
            public bool voltaMenu = false;
            int maxCaracs = 10;

            public Input()
            {
               recMouseAtual.Width = 1;
               recMouseAtual.Height = 1;
            }

            public static void EnviaPontos(int Pontos)
            {
                Input.Pontos = Pontos;
            }

            public void Load(ContentManager Content)
            {
                Fundo = Content.Load<Texture2D>("digite-01");
                letra = "0";
                for (int i = 0; i < 20; i++)
                {
                    texto[i] = "";
                }

                Fonte = Content.Load<SpriteFont>("SpriteFont1");
            }

            public void ApagarLista()
            {
                for (int i = 0; i < 20; i++)
                {
                    texto[i] = "";
                }
                TotalNome = "";
            }
        
            Keys j;
            int contador = 0;
            bool input = true;
           
        public void Update(GameTime gameTime)
            {
               if (input)
                {
                    foreach (Keys k in Keyboard.GetState().GetPressedKeys())
                    {
                        if (Apertando)
                        {
                            Apertando = false;
                            Console.WriteLine(k);                           
                                
                            
                            if (Convert.ToInt16(k) > 64 &&
                                Convert.ToInt16(k) < 91 && contador < maxCaracs)
                            {
                                j = k;
                                letra = j.ToString(); //Convert.ToString(j);
                                texto[contador] = letra;
                                TotalNome += texto[contador];
                                contador++;
                                Console.WriteLine(Convert.ToInt16(k));
                            }

                            else if (k == Keys.Space && contador < maxCaracs)
                            {
                                j = k;
                                letra = j.ToString(); //Convert.ToString(j);
                                texto[contador] = " ";
                                TotalNome += texto[contador];
                                contador++;
                                Console.WriteLine(Convert.ToInt16(k));
                            }

                            else if (k == Keys.Back && contador < maxCaracs)
                            {
                                contador--;
                                j = k;
                                letra = j.ToString(); //Convert.ToString(j);
                                texto[contador] = " ";
                                TotalNome = TotalNome.Substring(0,TotalNome.Length - 1);
                                
                                Console.WriteLine(Convert.ToInt16(k));
                            }
                            else
                            {
                            }
                        }                        

                        if (Keyboard.GetState().IsKeyUp(j))
                        {
                            Apertando = true;
                        }   
                    }

                    if (Keyboard.GetState().IsKeyDown(Keys.Enter))
                    {                        
                            input = false;
                            umavez = true;
                            EscreveArquivo(TotalNome, Pontos);
                            ApagarLista();
                            input = true;
                            //GerenciadorFases.EstadoAtual = GerenciadorFases.EstadosJogo.MENU;
                    }

                 }

               }

            public void EscreveArquivo(string Nome, int Pontos)
            {
                StreamWriter sw = new StreamWriter(@"../arquivo3.dig", true); 
                //CONFERIR SE ESSE ENDEREÇO ABSOLUTO VAI EXISTIR NA INSTALAÇÃO 
                //COLOCAR EM UM ENDEREÇO QUE GARANTA QUE VÁ EXISTIR
                sw.WriteLine(Nome);
                sw.WriteLine(Pontos);

                sw.Close();
            }

            public void Draw(SpriteBatch spriteBatch)
            {
                spriteBatch.Draw(Fundo, Vector2.Zero, Color.White);
                int positionX = 420;
                spriteBatch.DrawString(Fonte, Pontos.ToString(), new Vector2(420, 200), Color.CornflowerBlue);
                for (int p = 0; p < 20; p++)
                {
                    //spriteBatch.DrawString(Fonte, texto[p], new Vector2(p * 13, 0), Color.White);
                    //TotalNome += texto[p];
                    //spriteBatch.DrawString(Fonte, texto[p], new Vector2(p * 18, 0), Color.CornflowerBlue);
                    spriteBatch.DrawString(Fonte, texto[p], new Vector2(positionX + p * 18, 370), Color.CornflowerBlue);
                }
            }
        }

    }

